02. 定义函数
Definindo funções
定义函数
函数定义示例:
def cylinder_volume(height, radius):
pi = 3.14159
return height * pi * radius ** 2
定义 cylinder_volume 函数后,我们可以如下所示地调用该函数。
cylinder_volume(10, 3)
函数定义包含几个重要部分。
函数头部
我们从函数头部开始,即函数定义的第一行。
- 函数头部始终以关键字
def
开始,表示这是函数定义。 - 然后是函数名称(在此例中是
cylinder_volume
,因为函数名是要一个单词,所以需要用_进行连接),遵循的是和变量一样的命名规范。你可以在本页面下方回顾下命名规范。 - 名称之后是括号,其中可能包括用英文逗号分隔的参数(在此例中是
height
和radius
)。形参(或实参)是当函数被调用时作为输入传入的值,用在函数主体中。如果函数没有参数,这些括号留空。 - 头部始终以英文冒号
:
结束。
函数主体
函数的剩余部分包含在主题中,也就是函数完成操作的部分。
- 函数主体是在头部行之后缩进的代码。在此例中是定义 π 和返回体积的两行代码。
- 在此主体中,我们可以引用参数并定义新的变量,这些变量只能在这些缩进代码行内使用。
- 主体将经常包括
return
语句,用于当函数被调用时返回输出值。return
语句包括关键字return
,然后是经过评估以获得函数输出值的表达式。如果没有return
语句,函数直接返回 None(例如内置print()
函数)。
函数的命名规范
函数名称遵守和变量一样的命名规范。
- 仅在函数名称中使用普通字母、数字和下划线。不能有空格,需要以字母或下划线开头。
- 不能使用在 Python 中具有重要作用的保留字或内置标识符,我们将在这门课程中学习这方面的知识。要了解 python 保留字列表,请参阅此处。
- 尝试使用可以帮助读者了解函数作用的描述性名称。
Argumentos padrão
默认参数
我们可以向函数中添加默认参数,以便为在函数调用中未指定的参数提供默认值。
def cylinder_volume(height, radius=5):
pi = 3.14159
return height * pi * radius ** 2
在上述示例中,如果在函数调用中忽略了 radius
,则将该参数设为 5。如果我们调用 cylinder_volume(10)
,该函数将使用 10 作为高度,使用 5 作为半径。但是,如果调用 cylinder_volume(10, 7)
,7 将覆盖默认的值 5。
此外注意,我们按照位置向参数传递值。可以通过两种方式传递值:按照位置和按照名称。下面两个函数的效果是一样的。
cylinder_volume(10, 7) # pass in arguments by position
cylinder_volume(height=10, radius=7) # pass in arguments by name